﻿using Dapper;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.App_Code;
using WebApplication1.FBUtil.TypeConverter;
using WebApplication1.Models;

namespace WebApplication1.Controllers.Backend
{
    public class AdminController : Controller
    {
        public ActionResult Index()
        {
            /*
             * http://localhost:26652/admin/
             * 不能使用 http://localhost:26652/backend/admin/
             * 
            未找到视图“backend/admin/Index”或其母版视图，或没有视图引擎支持搜索的位置。搜索了以下位置:
            ~/Views/admin/backend/admin/Index.aspx
            ~/Views/admin/backend/admin/Index.ascx
            ~/Views/Shared/backend/admin/Index.aspx
            ~/Views/Shared/backend/admin/Index.ascx
            ~/Views/admin/backend/admin/Index.cshtml
            ~/Views/admin/backend/admin/Index.vbhtml
            ~/Views/Shared/backend/admin/Index.cshtml
            ~/Views/Shared/backend/admin/Index.vbhtml
            
            并且，~/Views/admin/backend/admin/Index.aspx 中的第一个 admin，就是当前控制器的名称里的 admin，这个控制器文件的名字无关。
            比如，把文件名改成了 HelloController.cs，发现搜索的还是这个目录结构。

            return View("backend/admin/Index");
             */

            // 未找到视图“~/Views/backend/admin/Index”或其母版视图，或没有视图引擎支持搜索的位置。搜索了以下位置:
            // ~/ Views / backend / admin / Index
            // 这样其实已经是对的了，只是此时不会自动添加文件后缀，所以需要我们手动添加。
            // return View("~/Views/backend/admin/Index");


            return View("~/Views/backend/admin/Index.cshtml");
        }

        public void DapperDemo()
        {
            /*
            public sealed class SqlConnection : DbConnection, ICloneable {}
            public abstract class DbConnection : Component, IDbConnection, IDisposable {}
             */
            // mysql 的连接，使用这个导致失败。
            using (IDbConnection connection = new SqlConnection(DapperApi.ConnectionString)) {
                string sql = "SELECT * FROM sys_user";
                List<UserModel> userList = connection.Query<UserModel>(sql).ToList();
                Console.WriteLine(userList);
            }
        }

        public void DapperDemo2()
        {
            using (MySqlConnection connection = new MySqlConnection(DapperApi.ConnectionString))
            {
                // 添加 Guid 和 string 之间转换的工具类。
                SqlMapper.AddTypeHandler(typeof(string), new GuidAndString());

                string sql = "SELECT id,so_name AS Name,so_account AS Account FROM sys_user";
                List<UserModel> userList = connection.Query<UserModel>(sql).ToList();

                // 遍历也成功了。
                System.Diagnostics.Debug.WriteLine("个数是：{0}", new Object[] { userList.Count });

                System.Diagnostics.Debug.WriteLine("typeof(string) {0}", new Object[] { typeof(string) });
                // System.String

                foreach (UserModel user in userList) {
                    System.Diagnostics.Debug.WriteLine("user.Id：{0}", new Object[] { user.Id });
                    System.Diagnostics.Debug.WriteLine("user.Name：{0}", new Object[] { user.Name });
                    System.Diagnostics.Debug.WriteLine("user.Account：{0}", new Object[] { user.Account });
                }

                // System.Guid;
                // 执行了一次，得到的结果是：566c1ea2-1358-4780-8b62-77bb1f51ea33。
                System.Diagnostics.Debug.WriteLine("Guid.NewGuid().ToString() {0}", new Object[] { Guid.NewGuid().ToString() });
            }
        }
    }
}